import java.util.Enumeration;

public class Work01 {
    public static int count = 0;

    public static void main(String[] args) {
        //使用的数字
        int[] nums = {0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12};

        //用来标记哪些数字已经被使用过  开始都没有被使用 false
        boolean[] tmp = new boolean[13];

        //用来存放每一组的 11 个数字
        int[] res = new int[11];
        //使用 dfs回溯算法 使用数字nums[1]-nums[10]
        dfs(1,11,tmp,res,nums);

        System.out.println(count / 10);
        //因为可以旋转 5 次,每次旋转后还有 一个 镜像 ,所以总的次数 /10

    }

    private static void dfs(int start, int end, boolean[] tmp, int[] res,int[] nums) {
        if(start == end){
            boolean check = check(res);
            if(check){
                count++;
            }
            return;
        }
        for (int i = 1; i < end; i++) {
            if(tmp[i] == false){
                res[start] = nums[i];
                tmp[i] = true;
                dfs(start+1,end,tmp,res,nums);
                tmp[i] = false;
            }
        }
    }


    /**
     * 检查当前这组数是否符合题目要求
     *
     * @param res 一组数字
     * @return 返回 true 和 false
     */
    private static boolean check(int[] res) {
        int sum = res[1] + res[3] + res[6] + res[9];
        if (res[1] + res[4] + res[8] + res[10] == sum && res[2] + res[3] + res[4] + res[5] == sum &&
                res[2] + res[6] + res[7] + res[10] == sum && res[5] + res[7] + res[8] + res[9] == sum) {
            return true;
        }
        return false;
    }
}

